Javascript Question
Chào tất cả các bạn! Trong bài viết này chúng ta sẽ tìm hiểu về một chủ đề quan trọng khi nó liên quan đến khoa học máy tính và software development: đó là data structures
Nó chắc chắn là một chủ đề mà bất cứ ai trên thế khới cũng phải biết làm việc trong lập trình, nhưng nó không khó để hiểu và không đáng sợ khi bạn bắt đầu làm quen với nó :))
Let's go !
Nội dung chính
- Cấu trúc dữ liệu là gì
- Mãng (Arrays)
- Object (hash tables)
- Stack (Ngăn xếp)
- Queues
- Linked lists
- Single linked lists
- Double linked list
- Trees (Cây)
- Binary trees
- Heaps
- Graphs
- Cây đồ thị vô hướng và có hướng
- Cây đồ thị có trọng số và không có trọng số
2022 sẽ là năm của kiến trúc mới trong mã nguồn mở
Vì bản phát hành gần đây, đây là khoảng thời gian tốt để tìm hiểu những thay đổi đang diễn ra và chúng có thể ảnh hưởng như thế nào để ứng dụng React Native của bạn
Trong bài viết này bao gồm hầu hết các thay đổi quan trọng bởi công nghệ mới
-
JavaScrip Interface(JSI)
-
Fabric
-
Turbo Modules
-
CodeGen
Đầu tiên chúng ta sẽ đi tìm hiểu
Công nghệ hiện tại
Trước khi đến với công nghệ mới chúng ta sẽ tóm tắt công nghệ hiện tại làm việc như thế nào
Vui lòng lưu ý, Tôi chỉ bao gồm những điểm liên quan để hiểu blog này, nếu bạn muốn tìm hiểu nhiều hơn về công nghệ hiện tại vui lòng đọc tài liệu của react native
- In a nutshell
Khi bạn chạy một ứng dụng RN, tất cả code Javascript của bạn sẽ được đóng gói lại với nhau thành một gói có tên là JS Bundle, Mã Native code được giữ nguyên
Việc thực thi của ứng dụng React Native sảy ra trong 3 luồng
- Javascript Thread: sử dụng JS Engine, để chạy JS Bundle
- Native/UI Thread: nó sử dụng để Native Modules và xử lý hoạt động giống UI Rendering, sủ dụng gesture events
- Ngoài ra Thread thứ 3 gọi là shadow thread, Được sử dụng để tính toán bố cục của các phần tử trước khi hiển thị chúng trên màn hình
Giao tiếp giữa JS và Native Threads được giao tiếp thông qua một cây cầu, Khi gửi dữ liệu đi qua cây cầu nó sẽ được chia thành từng phần(tối ưu hóa) và được phân ra dưới dạng JSON, Cây cầu này có thể chỉ xử lý các giao tiếp bất đồng bộ

Một số điều kiện quan trọng:
JavascriptCore: nó là tên của Javascript Engine, cái mà React Native sử dụng để thực thi JS Code
Yoga: Là tên của Layout Engine, cái mà sử dụng để tính toán vị trí của phần tử UI của người dùng trên màn hình
1. Javascript Interface (JSI)
Trong công nghệ hiện tại, React native sử dụng Bridge Module để tạo các giao tiếp giữa JS code và Native threads, Mỗi khi data được gửi đến cây cầu, nó phải được đăng ký dưới dàng JSON, Khi dữ liệu được nhận ở phía bên kia nó cũng được giải mã
Nó có nghĩa là Javascript và Native hoạt động không biết về nhau (ie. JS Thread không thể gọi trực tiếp một phương thức trên luồng Native)
Một điều quan trọng khác, Các thông báo gửi qua cầu về bản chất là không đồng bộ, đây là một điều tốt cho hầu hết các trường hợp sử dụng, nhưng có một số trường hợp khi mã JS và mã gốc cần được đồng bộ hóa
